/**
 * 
 */
package com.alstudio.module.xmpp.protocol.xmpp.parser.iq.usersaction;

import com.alstudio.module.xmpp.protocol.xmpp.ALXmppEventListener;
import com.alstudio.module.xmpp.protocol.xmpp.packact.ALIQ;
import com.alstudio.module.xmpp.protocol.xmpp.packact.IQNameSpace;
import com.alstudio.module.xmpp.protocol.xmpp.parser.iq.ALBaseIQParser;
import com.alstudio.module.xmpp.protocol.xmpp.parser.iq.IQParseEventHandler.IQXmlParseEventCallback;
import com.alstudio.pojo.module.user.User;
import com.alstudio.pojo.module.user.Voiceintro;
import com.alstudio.utils.formater.numeric.ALNumericUtils;
import com.alstudio.utils.log.ALLog;

/**
 * 解析添加普通关注或者特别关注结果
 * 
 * @author alonso lee
 * 
 */
public class AddNormalOrSpecailFavoritesParser extends ALBaseIQParser implements
		IQXmlParseEventCallback {

	private String version;
	private User u;

	@Override
	public void parseIQPackage(ALIQ packact, String stream,
			ALXmppEventListener listener) throws Exception {
		// TODO Auto-generated method stub
		code = 0;
		mListener = listener;
		ns = "";
		version = "";
		u = null;
		u = new User();
		ns = packact.getNameSpace();
		startParse(packact, stream, this);
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * com.alstudio.module.xmpp.protocol.xmpp.parser.iq.IQParseEventHandler.
	 * IQXmlParseEventCallback#processErrorStartTag(java.lang.String)
	 */
	@Override
	public void processErrorStartTag(String tag) {
		// TODO Auto-generated method stub
		if (tag.equals(ERROR_CODE_TAG)) {
			code = ALNumericUtils.parseInt(getAttValue("code"), 0);
		}
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * com.alstudio.module.xmpp.protocol.xmpp.parser.iq.IQParseEventHandler.
	 * IQXmlParseEventCallback#processSetStartTag(java.lang.String)
	 */
	@Override
	public void processSetStartTag(String tag) {
		// TODO Auto-generated method stub

	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * com.alstudio.module.xmpp.protocol.xmpp.parser.iq.IQParseEventHandler.
	 * IQXmlParseEventCallback#processGetStartTag(java.lang.String)
	 */
	@Override
	public void processGetStartTag(String tag) {
		// TODO Auto-generated method stub

	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * com.alstudio.module.xmpp.protocol.xmpp.parser.iq.IQParseEventHandler.
	 * IQXmlParseEventCallback#processResultStartTag(java.lang.String)
	 */
	@Override
	public void processResultStartTag(String tag) {
		// TODO Auto-generated method stub
		if (tag.equals(NICK_TAG)) {
			// 昵称
			u.setNick(readText());
		} else if (tag.equals(SEX_TAG)) {
			// 性别
			u.setSex(readText());
		} else if (tag.equals(JID_TAG)) {
			// jid
			u.setJid(readText());
		} else if (tag.equals(LAST_ONLINE_TAG)) {
			// 性别
			// 在线时间
			u.setLastLoginTimeStamp(ALNumericUtils.parseLong(readText(), 0));
		} else if (tag.equals(AGE_TAG)) {
			// 年龄
			u.setAge(readText());
		} else if (tag.equals(PROVICE_TAG)) {
			// 省会
			u.setProvince(readText());
		} else if (tag.equals(CITY_TAG)) {
			// 城市
			u.setCity(readText());
		} else if (tag.equals(GLAMOUR_TAG)) {
			// 魅力
			u.setGlamour(readText());
		} else if (tag.equals(PROVICE_TAG)) {
			// 省会
			u.setProvince(readText());
		} else if (tag.equals(IN_BLACK_LIST_TAG)) {
			// 黑名单
			u.setInblacklist(ALNumericUtils.parseInt(readText(), 0) == 1 ? true
					: false);
		} else if (tag.equals(ONLINE_TAG)) {
			// 在线
			u.setOnline(TRUE.equals(readText()));
		} else if (tag.equals(IS_FRIEND_TAG)) {
			// 好友关系
			u.setIsfriend(readText());
		}

		else if (tag.equals(BIRTHDAY_TAG)) {
			// 生日
			u.setBirthday(readText());
		} else if (tag.equals(SIG_TAG)) {
			// 签名
			u.setSignature(readText());
		} else if (tag.equals(BACKGROUND_TAG)) {
			// 背景图
			// u.set(readText());
		} else if (tag.equals(VOICE_TAG)) {
			// 语音
			Voiceintro v = new Voiceintro();
			v.setAudioLen(ALNumericUtils.parseInt(getAttValue("len"), 0));
			v.setVoiceFileUrl(getAttValue("fileid"));
			u.setVoiceintro(v);
		} else if (tag.equals(VAUTHED_TAG)) {
			// V认证状态
			u.setVauthed(ALNumericUtils.parseInt(readText(), 0));
		}

		else if (tag.equals(STATUS_TAG)) {
			// 在线状态
			u.setStatus(ALNumericUtils.parseInt(readText(), 0));
		}

		else if (tag.equals(FAN_SNUM_TAG)) {
			// 粉丝数
			u.setCollectingnum(readText());
		} else if (tag.equals(EMAIL_TAG)) {
			// 绑定邮箱
			u.setEmailIsBind(ALNumericUtils.parseInt(getAttValue("status"), 0));
		} else if (tag.equals(GOLD_TAG)) {
			// 金币
			u.setGold(readText());
		} else if (VERSION_TAG.equals(tag)) {
			version = readText();
			ALLog.d("版本号" + version);
		}
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * com.alstudio.module.xmpp.protocol.xmpp.parser.iq.IQParseEventHandler.
	 * IQXmlParseEventCallback#processEndTag(java.lang.String)
	 */
	@Override
	public void processEndTag(String tag) {
		// TODO Auto-generated method stub

	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * com.alstudio.module.xmpp.protocol.xmpp.parser.iq.IQParseEventHandler.
	 * IQXmlParseEventCallback#processStartDocument()
	 */
	@Override
	public void processStartDocument() {
		// TODO Auto-generated method stub

	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * com.alstudio.module.xmpp.protocol.xmpp.parser.iq.IQParseEventHandler.
	 * IQXmlParseEventCallback#processEndDocument()
	 */
	@Override
	public void processEndDocument() {
		// TODO Auto-generated method stub
		onCallback();
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * com.alstudio.module.xmpp.protocol.xmpp.parser.iq.ALBaseIQParser#onCallback
	 * ()
	 */
	@Override
	public void onCallback() {
		// TODO Auto-generated method stub
		if (mListener != null) {
			if (ns.equals(IQNameSpace.NS_ADD_FAVORITES)) {
				// 普通关注
				mListener.onGetAddNormalOrSpecialFavoritesResult(0, code,
						version, u);
				ALLog.d("回调普通关注"+code);
			} else if (ns.equals(IQNameSpace.NS_ADD_FAVORITES_SPECIAL)) {
				// 特别关注
				mListener.onGetAddNormalOrSpecialFavoritesResult(1, code,
						version, u);
				ALLog.d("回调特别关注"+code);
			}
		}
	}

}
